package utils

import (
	"encoding/json"
	"time"
	"ubt-gin-admin/app/api/model/sys_mod"
	"ubt-gin-admin/app/pkg/db"

	"github.com/gin-gonic/gin"
)

// GetUserInfo 从缓冲中获取用户信息
func GetUserInfo(ctx *gin.Context, token string) *sys_mod.SysUserLoginRes {
	if userInfo, err := db.RdsCli.Get(ctx, token).Result(); err == nil && userInfo != "" {
		var res *sys_mod.SysUserLoginRes
		if err = json.Unmarshal([]byte(userInfo), &res); err == nil {
			return res
		}
	}
	return nil
}

// SaveUserInfo 把用户信息保存到缓冲中
func SaveUserInfo(ctx *gin.Context, key, value string) {
	// 写入缓冲数据，并设置失效时间（8小时）
	if err := db.RdsCli.Set(ctx, key, value, 8*time.Hour).Err(); err != nil {
		return
	}
}

// CleanUserInfo 用户登出后清除缓冲信息
func CleanUserInfo(ctx *gin.Context, req *sys_mod.SysUserExitReq) {
	// 删除缓冲数据
	if _, err := db.RdsCli.Del(ctx, "rd_"+req.UserId).Result(); err != nil {
		return
	}
	if _, err := db.RdsCli.Del(ctx, req.Token).Result(); err != nil {
		return
	}
}
